package org.dromara.hm.domain.bo;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.poi.hpsf.Decimal;
import org.dromara.hm.domain.HmSaleOrder;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 销售订单业务对象 hm_sale_order
 *
 * @author zy Hu
 * @date 2024-12-15
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = HmSaleOrder.class, reverseConvertGenerate = false)
public class HmSaleOrderBo extends BaseEntity {

    /**
     * 销售记录id
     */
    private Long saleId;

    /**
     * 销售产品id
     */
    @NotNull(message = "销售产品不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long saleProductId;


    /**
     * 销售数量
     */
    @NotNull(message = "销售数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal saleNum;

    /**
     * 销售店铺id
     */
    @NotNull(message = "销售店铺不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long saleDept;


    /**
     * 销售人员id
     */
    @NotNull(message = "销售人员不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long saleUser;

    /**
     * 销售时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date saleOrderTime;

    /**
     * 转换时间
     */
    private String orderTime;


    /**
     * 客户id
     */
    @NotNull(message = "客户不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long customerId;

    /**
     * 销售金额
     */
    private BigDecimal saleAmount;

    /**
     * 销售类型
     */
    private String saleType;


    /**
     * 是否为历史订单
     */
    private String isHistory;

    /**
     * 状态
     */

    private String status;

    /**
     * 备注
     */

    private String remark;

    /**
     * 是否评点
     */
    private String isGift;

    /**
     * 评点商品id
     */
    private String giftProductId1;

    /**
     * 评点数量
     */
    private BigDecimal giftNum1;

    /**
     * 评点商品id
     */
    private String giftProductId2;

    /**
     * 评点数量
     */
    private BigDecimal giftNum2;

    /**
     * 评点商品id
     */
    private String giftProductId3;

    /**
     * 评点数量
     */
    private BigDecimal giftNum3;


    /**
     * 评点商品id
     */
    private String giftProductId4;

    /**
     * 评点数量
     */
    private BigDecimal giftNum4;


    /**
     * 评点商品id
     */
    private String giftProductId5;

    /**
     * 评点数量
     */
    private BigDecimal giftNum5;
    /**
     * 产品的使用时间
     */
    private Date useTime;

    /**
     * 累计退款金额
     */
    private BigDecimal refundAmount;

    /**
     * 可退金额上限(根据支付金额计算)
     */
    private BigDecimal maxRefundAmount;

    /**
     * 退款状态(0-无退款 1-部分退款 2-全额退款)
     */
    private Integer refundStatus;

    /**
     * 累计退货数量
     */
    private Integer returnTotalNum;

    /**
     * 退货状态(0-无退货 1-退货中 2-部分退货 3-全部退货)
     */
    private Integer returnStatus;

    /**
     * 最近退货时间
     */
    private Date lastReturnTime;

    /**
     * 回款开始时间 (自定义回款额统计)
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date refundStartTime;

    /**
     * 回款结束时间 (自定义回款额统计)
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date refundEndTime;

    /**
     * 最小回款金额
     */
    private BigDecimal minRefundAmount;


    /**
     * 最小剩余提货量 (客户取货剩余量搜索)
     */
    private Integer minSurplusNum;

    /**
     * 最大剩余提货量 (客户取货剩余量搜索)
     */
    private Integer maxSurplusNum;


}
